/*
 * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package com.sun.corba.se.spi.presentation.rmi;

import java.rmi.RemoteException;

import org.omg.CORBA.portable.Delegate;
import org.omg.CORBA.portable.OutputStream;

import org.omg.CORBA.ORB;

/** Interface used to support dynamically generated stubs.
 * This supplies some methods that are found in
 * org.omg.CORBA.portable.ObjectImpl that are not available
 * in org.omg.CORBA.Object.
 */
public interface DynamicStub extends org.omg.CORBA.Object {
    /** Similar to ObjectImpl._set_delegate
     */
    void setDelegate(Delegate delegate);

    /** Similar to ObjectImpl._get_delegate
     */
    Delegate getDelegate();

    /** Similar to ObjectImpl._orb()
     */
    ORB getORB();

    /** Similar to ObjectImpl._ids
     */
    String[] getTypeIds();

    /** Connect this dynamic stub to an ORB.
     * Just as in standard RMI-IIOP, this is required after
     * a dynamic stub is deserialized from an ObjectInputStream.
     * It is not needed when unmarshalling from a
     * org.omg.CORBA.portable.InputStream.
     */
    void connect(ORB orb) throws RemoteException;

    boolean isLocal();

    OutputStream request(String operation, boolean responseExpected);
}
